﻿// ===============================================================================
//  Copyright © ymind.net. All rights reserved .
//  官方网站：http://ymind.net/
//  版权所有：彦铭工作室 老陈出品
// ===============================================================================

using System;
using System.Runtime.InteropServices;
using System.Text;

namespace Lcsoft.TemplateEngine.Tags
{
	/// <summary>
	/// 表示用于构造 C# 中的 if 语句的模板引擎流程控制语句的标签。
	/// </summary>
	[ComVisible(true)]
	[Serializable]
	public class IfTag : StatementElement
	{
		/// <summary>
		/// 初始化 <see cref="IfTag"/> 类的新实例。
		/// </summary>
		/// <param name="prefix">模板引擎语句标签的前缀名。</param>
		/// <param name="line">标签所在的行数。</param>
		/// <param name="column">标签所在的列数。</param>
		public IfTag(string prefix, int line, int column) : base(prefix, "if", line, column) { }

		/// <summary>
		/// 返回包含 <see cref="IfTag"/> 内容的 .aspx 格式的字符串。
		/// </summary>
		/// <returns>返回 <see cref="System.String"/>。</returns>
		public override string ToAspx()
		{
			if (this.Disabled) return String.Empty;

			var aspx = new StringBuilder();
			var indentBlank = this.IndentBlank;

			aspx.AppendFormat("{2}{2}<%{0}if ({1})%>{2}{2}", indentBlank, this.Expression, Environment.NewLine);
			aspx.AppendFormat("{1}{1}<%{0}{{%>{1}{1}", indentBlank, Environment.NewLine);

			if (this.Nodes.Count > 0) foreach (var node in this.Nodes) aspx.Append(node.ToAspx());

			aspx.AppendFormat("{1}{1}<%{0}}}%>{1}{1}", indentBlank, Environment.NewLine);

			return aspx.ToString();
		}
	}
}
